Here we perform a first pass look at the data. We will plot some high-level statistics and see where the various perturbations fall with respect to these readouts. We expect to see that for all readouts, the non-targeting experiments display a central distribution, with most perturbations falling nearby. Perturbations that impact the statistics are expected to appear as outliers.
library(magrittr)
library(tidyverse)
library(plotly)
library(ggbeeswarm)
library(Matrix)
library(matrixStats)
library(SingleCellExperiment)
set.seed(20210818)
FILE_SCE_TX="data/sce/rd7_essential.annot.txs.Rds"
## KNOWN FACTORS
GENES_CPSF <- c("CPSF1", "CPSF2", "CPSF3", "CPSF4", "WDR33", "FIP1L1")
GENES_CF1 <- c("NUDT21", "CPSF6", "CPSF7")
GENES_CF2 <- c("PCF11", "CLP1")
GENES_CSTF <- c("CSTF1", "CSTF2", "CSTF2T", "CSTF3")
GENES_PAF <- c("PAF1", "CTR9", "RTF1")
GENES_NEF <- c("NXF1", "THOC1", "THOC2", "THOC3", "THOC5", "THOC6", "THOC7")
GENES_SPL <- str_c("SRSF", 1:11)
GENES_MTOR <- c("MTOR", "RPTOR", "MLST8", "CLK2", "AKT1")
COLOR_MAP <- c("non-targeting"="grey",
"CPSF complex"="red4",
"CFI complex"="purple2",
"CFII complex"="orange2",
"CSTF complex"="peachpuff",
"PAF complex"="steelblue",
"mRNA export factors"="orchid2",
"splicing factors"="seagreen1",
"MTOR complex"="cyan",
"other"="black")
sce <- readRDS(FILE_SCE_TX)
Among our statistics, we will compute the percentage of UMIs corresponding to specific isoform classes, including IPA, proximal, and distal, as well as UMIs from mitochondrial genes.
idx_mt <- rowRanges(sce) %>%
unlist %>% as_tibble %>%
mutate(is_mt=seqnames == "chrM") %>%
select(transcript_id, is_mt) %>%
deframe() %>%
`[`(rownames(sce))
df_cells <- colData(sce) %>% as_tibble %>%
mutate(umis_total=colSums(counts(sce)),
pct_ipa=colSums(counts(sce[rowData(sce)$is_ipa,]))/umis_total,
pct_proximal=colSums(counts(sce[rowData(sce)$is_proximal,]))/umis_total,
pct_distal=colSums(counts(sce[rowData(sce)$is_distal,]))/umis_total,
pct_novel=colSums(counts(sce[rowData(sce)$is_novel,]))/umis_total,
pct_mt=colSums(counts(sce[idx_mt,]))/umis_total)
df_cells %>%
ggplot(aes(x=UMI_count, y=umis_total)) +
geom_density2d_filled() +
geom_abline(linetype='dashed', color="white") +
scale_x_log10(expand=c(0,0)) + scale_y_log10(expand=c(0,0)) +
scale_fill_viridis_d(option="F") +
theme_bw() +
labs(x="UMI counts per cell [published]",
y="UMI counts per cell [scUTRquant]") +
guides(fill='none')
The scUTRquant QC showed the elbow plots were not well defined for Lanes 21 and 48, which led to very high numbers of barcodes being called as cells. We hope to see that these samples do not have a high number of annotation cells.
df_cells %>%
mutate(sample_id=fct_infreq(sample_id)) %>%
ggplot(aes(y=sample_id)) +
geom_bar(fill='lightgrey', color='black', size=0.2) +
scale_x_continuous(expand=c(0,0,0.05,0)) +
theme_bw() +
labs(x="Cells", y="Sample")
df_cells %>%
mutate(target_gene=fct_infreq(target_gene)) %>%
dplyr::count(target_gene, name="n_cells") %>%
filter(target_gene != 'non-targeting') %>%
ggplot(aes(x=target_gene, y=n_cells)) +
geom_bar(stat='identity', fill='grey', width=1) +
scale_y_log10(expand=c(0,0,0.05,0)) +
theme_bw() +
theme(axis.text.x=element_blank(), axis.ticks.x=element_blank()) +
labs(x="Target Gene", y="Cells")
There are several perturbations that have extremely low cell counts. Generally, we have used a rule of thumb of at least 200 cells per condition as a lower bound for performing transcriptome-wide differential transcript usage testing (with scUTRboot).
Instead, for the majority of perturbations, we may only be able to characterize high-level changes in transcriptome characteristics rather than at gene-level resolution.
We will explore whether any perturbations have effects on basic transcriptome characteristics. These will also be compared against each other.
df_targets <- df_cells %>%
group_by(target_gene, target_gene_id, sgID_AB) %>%
summarize(n_cells=dplyr::n(),
mean_umis_total=mean(umis_total),
pct_ipa=weighted.mean(pct_ipa, umis_total),
pct_proximal=weighted.mean(pct_proximal, umis_total),
pct_distal=weighted.mean(pct_distal, umis_total),
pct_mt=weighted.mean(pct_mt, umis_total), .groups='drop') %>%
mutate(gene_set=case_when(
target_gene == "non-targeting" ~ "non-targeting",
target_gene %in% GENES_CPSF ~ "CPSF complex",
target_gene %in% GENES_CF1 ~ "CFI complex",
target_gene %in% GENES_CF2 ~ "CFII complex",
target_gene %in% GENES_CSTF ~ "CSTF complex",
target_gene %in% GENES_PAF ~ "PAF complex",
target_gene %in% GENES_NEF ~ "mRNA export factors",
target_gene %in% GENES_SPL ~ "splicing factors",
target_gene %in% GENES_MTOR ~ "MTOR complex",
TRUE ~ "other"
) %>% factor(levels=c("other", "non-targeting", "CPSF complex",
"CFI complex", "CFII complex", "CSTF complex",
"PAF complex", "mRNA export factors",
"splicing factors", "MTOR complex"))) %>%
mutate(is_known=!gene_set %in% c("non-targeting", "other"))
df_targets %>%
select(target_gene, pct_mt, mean_umis_total, sgID_AB) %>%
slice_max(pct_mt, n=20)
## # A tibble: 20 × 4
## target_gene pct_mt mean_umis_total sgID_AB
## <chr> <dbl> <dbl> <chr>
## 1 CDK7 0.111 10687. CDK7_+_68530926.23-P1P2|CDK7_-_68530696.2…
## 2 MED28 0.109 8796. MED28_-_17616331.23-P1P2|MED28_+_17616313…
## 3 TAF2 0.106 7062. TAF2_-_120844853.23-P1P2|TAF2_-_120845040…
## 4 TAF10 0.104 10273. TAF10_-_6633436.23-P1P2|TAF10_+_6633406.2…
## 5 MED11 0.104 10082. MED11_-_4635030.23-P1P2|MED11_-_4634925.2…
## 6 MED18 0.104 10356. MED18_-_28655598.23-P1P2|MED18_-_28655606…
## 7 MED27 0.104 8444. MED27_+_134955254.23-P1P2|MED27_-_1349552…
## 8 SUPT4H1 0.104 10982. SUPT4H1_-_56429520.23-P1P2|SUPT4H1_-_5642…
## 9 TAF8 0.102 6762. TAF8_-_42018330.23-P1P2|TAF8_+_42018316.2…
## 10 INCENP 0.102 15260. INCENP_+_61891519.23-P1P2|INCENP_+_618915…
## 11 TAF12 0.102 6530. TAF12_+_28969568.23-P1P2|TAF12_+_28969521…
## 12 POLR2G 0.102 10440. POLR2G_-_62529086.23-P1P2|POLR2G_-_625290…
## 13 RPAP1 0.102 9587. RPAP1_+_41836411.23-P1P2|RPAP1_+_41836408…
## 14 TAF1 0.101 5233. TAF1_-_70586444.23-P1P2|TAF1_+_70586687.2…
## 15 TRRAP 0.101 8527. TRRAP_-_98476562.23-P1P2|TRRAP_-_98476572…
## 16 TAF3 0.100 8224. TAF3_-_7860714.23-P1P2|TAF3_-_7860540.23-…
## 17 FUNDC2 0.100 6881. FUNDC2_-_154255407.23-P1P2|FUNDC2_-_15425…
## 18 URI1 0.0984 9843. URI1_+_30433533.23-P1P2|URI1_+_30433164.2…
## 19 MED29 0.0983 8414. MED29_-_39882017.23-P1P2|MED29_-_39882278…
## 20 TADA3 0.0983 8454. TADA3_+_9834144.23-P1P2|TADA3_-_9834393.2…
df_targets %>%
select(target_gene, pct_mt, mean_umis_total, sgID_AB) %>%
slice_min(pct_mt, n=20)
## # A tibble: 20 × 4
## target_gene pct_mt mean_umis_total sgID_AB
## <chr> <dbl> <dbl> <chr>
## 1 LRPPRC 0.00516 9018. LRPPRC_+_44223082.23-P1P2|LRPPRC_-_44223…
## 2 MTPAP 0.00875 9507. MTPAP_-_30638029.23-P1P2|MTPAP_-_3063803…
## 3 POLRMT 0.00908 9652. POLRMT_+_633505.23-P1P2|POLRMT_+_633481.…
## 4 OPA1 0.0133 10037. OPA1_+_193310990.23-P1P2|OPA1_-_19331119…
## 5 ZBTB14 0.0136 11388. ZBTB14_-_5295498.23-P1P2|ZBTB14_+_529583…
## 6 CAST 0.0163 11308. CAST_-_95997966.23-P2|CAST_-_95998431.23…
## 7 TOMM22 0.0167 10801. TOMM22_+_39078005.23-P1P2|TOMM22_-_39078…
## 8 TOMM40 0.0173 9585. TOMM40_-_45394587.23-P1P2|TOMM40_-_45394…
## 9 TIMM23B 0.0174 9602. TIMM23B_-_51371488.23-P1P2|TIMM23B_-_513…
## 10 HSPA9 0.0193 10223. HSPA9_-_137911079.23-P1P2|HSPA9_-_137911…
## 11 DNAJA3 0.0202 10141. DNAJA3_+_4475898.23-P1P2|DNAJA3_-_447585…
## 12 POGLUT3 0.0212 10188. KDELC2_-_108369127.23-P1P2|KDELC2_-_1083…
## 13 HSPE1 0.0249 10647. HSPE1_-_198365117.23-P1P2|HSPE1_+_198365…
## 14 LONP1 0.0252 10646. LONP1_+_5720108.23-P1P2|LONP1_+_5720103.…
## 15 PNPT1 0.0254 10788. PNPT1_-_55920888.23-P1P2|PNPT1_-_5592090…
## 16 SAMM50 0.0274 8333. SAMM50_+_44351418.23-P1P2|SAMM50_-_44351…
## 17 PRORP 0.0278 9332. KIAA0391_+_35591777.23-P1P2|KIAA0391_+_3…
## 18 TEFM 0.0278 10525. TEFM_+_29233191.23-P1P2|TEFM_+_29233099.…
## 19 TFAM 0.0282 10072. TFAM_+_60145205.23-P1P2|TFAM_-_60145223.…
## 20 PAM16 0.0292 9825. PAM16_+_4401248.23-P1P2|PAM16_-_4401236.…
df_targets %>%
select(target_gene, pct_ipa, mean_umis_total, sgID_AB) %>%
slice_max(pct_ipa, n=20)
## # A tibble: 20 × 4
## target_gene pct_ipa mean_umis_total sgID_AB
## <chr> <dbl> <dbl> <chr>
## 1 HSPA5 0.190 8863. HSPA5_+_128003614.23-P1P2|HSPA5_+_128003…
## 2 EIF3D 0.187 15604. EIF3D_+_36925166.23-P1P2|EIF3D_-_3692515…
## 3 SNRNP200 0.186 10012. SNRNP200_+_96971234.23-P1P2|SNRNP200_-_9…
## 4 ALG11 0.185 5633. ALG11_+_52586530.23-P1P2|ALG11_-_5258654…
## 5 CDC5L 0.185 15023. CDC5L_-_44355475.23-P1P2|CDC5L_+_4435593…
## 6 SRP68 0.184 6927. SRP68_+_74068540.23-P1P2|SRP68_-_7406860…
## 7 SNIP1 0.183 8618. SNIP1_+_38019681.23-P1P2|SNIP1_+_3801979…
## 8 PRPF6 0.183 9112. PRPF6_-_62612504.23-P1P2|PRPF6_+_6261256…
## 9 MFAP1 0.183 10002. MFAP1_+_44116853.23-P1P2|MFAP1_-_4411690…
## 10 SMU1 0.182 11975. SMU1_+_33076608.23-P1P2|SMU1_-_33076622.…
## 11 EIF3E 0.182 15958. EIF3E_+_109260706.23-P1P2|EIF3E_+_109260…
## 12 CHMP2A 0.182 14464. CHMP2A_-_59066282.23-P1P2|CHMP2A_+_59066…
## 13 SLU7 0.181 11552. SLU7_+_159846048.23-P1P2|SLU7_+_15984606…
## 14 HSPA9 0.180 10223. HSPA9_-_137911079.23-P1P2|HSPA9_-_137911…
## 15 CACTIN 0.180 9811. CACTIN_-_3626762.23-P1P2|CACTIN_-_362655…
## 16 PRPF8 0.180 10689. PRPF8_+_1588005.23-P1P2|PRPF8_+_1588152.…
## 17 RBM8A 0.180 13527. RBM8A_-_145507619.23-P1P2|RBM8A_+_145507…
## 18 EIF2S1 0.180 5820. EIF2S1_-_67827085.23-P1P2|EIF2S1_-_67827…
## 19 PSMD2 0.180 9759. PSMD2_+_184017090.23-P1P2|PSMD2_-_184017…
## 20 PRPF31 0.180 10733. PRPF31_-_54619172.23-P1P2|PRPF31_-_54619…
df_targets %>%
select(target_gene, pct_ipa, mean_umis_total, sgID_AB) %>%
slice_min(pct_ipa, n=20)
## # A tibble: 20 × 4
## target_gene pct_ipa mean_umis_total sgID_AB
## <chr> <dbl> <dbl> <chr>
## 1 CPSF4 0.144 10493. CPSF4_-_99036611.23-P1P2|CPSF4_-_9903657…
## 2 RAMAC 0.147 10691. FAM103A1_-_83654987.23-P1P2|FAM103A1_+_8…
## 3 CNOT1 0.148 17545. CNOT1_+_58663696.23-P1P2|CNOT1_-_5866353…
## 4 RNMT 0.148 9612. RNMT_-_13726752.23-P1P2|RNMT_+_13726813.…
## 5 NKX6-1 0.148 6424. NKX6-1_-_85419268.23-P1P2|NKX6-1_-_85418…
## 6 ZC3H18 0.149 9831. ZC3H18_+_88636860.23-P1P2|ZC3H18_+_88636…
## 7 CPSF1 0.149 10440. CPSF1_+_145634685.23-P1P2|CPSF1_-_145634…
## 8 CSTF3 0.149 8380. CSTF3_+_33183038.23-P1P2|CSTF3_-_3318280…
## 9 TAF2 0.149 7062. TAF2_-_120844853.23-P1P2|TAF2_-_12084504…
## 10 PTCD1 0.149 10392. PTCD1_-_99036387.23-P2|PTCD1_+_99036338.…
## 11 CNOT2 0.150 15167. CNOT2_-_70637260.23-P1P2|CNOT2_+_7063765…
## 12 TAF12 0.150 6530. TAF12_+_28969568.23-P1P2|TAF12_+_2896952…
## 13 TPRKB 0.150 10188. TPRKB_+_73964387.23-P1P2|TPRKB_-_7396445…
## 14 CNOT3 0.150 20216. CNOT3_+_54641532.23-P1P2|CNOT3_-_5464169…
## 15 FIP1L1 0.150 9840. FIP1L1_+_54243867.23-P1P2|FIP1L1_-_54244…
## 16 NCBP1 0.151 8811. NCBP1_+_100396123.23-P1P2|NCBP1_+_100396…
## 17 SRRT 0.151 10204. SRRT_+_100472814.23-P1P2|SRRT_+_10047279…
## 18 LAMB1 0.151 14339. LAMB1_-_107643640.23-P1P2|LAMB1_-_107643…
## 19 CHTF8 0.151 14309. CHTF8_+_69166252.23-P1P2|CHTF8_-_6916651…
## 20 YAE1 0.151 10557. YAE1D1_+_39606256.23-P1P2|YAE1D1_-_39606…
df_targets %>%
select(target_gene, pct_proximal, mean_umis_total, sgID_AB) %>%
slice_max(pct_proximal, n=20)
## # A tibble: 20 × 4
## target_gene pct_proximal mean_umis_total sgID_AB
## <chr> <dbl> <dbl> <chr>
## 1 TAF2 0.220 7062. TAF2_-_120844853.23-P1P2|TAF2_-_120…
## 2 TAF8 0.216 6762. TAF8_-_42018330.23-P1P2|TAF8_+_4201…
## 3 TAF10 0.216 10273. TAF10_-_6633436.23-P1P2|TAF10_+_663…
## 4 TADA3 0.216 8454. TADA3_+_9834144.23-P1P2|TADA3_-_983…
## 5 TRRAP 0.216 8527. TRRAP_-_98476562.23-P1P2|TRRAP_-_98…
## 6 MED27 0.216 8444. MED27_+_134955254.23-P1P2|MED27_-_1…
## 7 CDK7 0.215 10687. CDK7_+_68530926.23-P1P2|CDK7_-_6853…
## 8 TAF3 0.215 8224. TAF3_-_7860714.23-P1P2|TAF3_-_78605…
## 9 TAF1 0.215 5233. TAF1_-_70586444.23-P1P2|TAF1_+_7058…
## 10 MEIS3 0.215 7515. MEIS3_-_47922702.23-P1|MEIS3_-_4792…
## 11 MED28 0.214 8796. MED28_-_17616331.23-P1P2|MED28_+_17…
## 12 MED26 0.213 7521. MED26_+_16738991.23-P1P2|MED26_-_16…
## 13 TAF12 0.213 6530. TAF12_+_28969568.23-P1P2|TAF12_+_28…
## 14 MED18 0.213 10356. MED18_-_28655598.23-P1P2|MED18_-_28…
## 15 SUPT4H1 0.212 10982. SUPT4H1_-_56429520.23-P1P2|SUPT4H1_…
## 16 TAF13 0.212 8856. TAF13_+_109618565.23-P1P2|TAF13_+_1…
## 17 RPAP3 0.212 7776. RPAP3_+_48099773.23-P1P2|RPAP3_+_48…
## 18 FUNDC2 0.212 6881. FUNDC2_-_154255407.23-P1P2|FUNDC2_-…
## 19 POLR2G 0.212 10440. POLR2G_-_62529086.23-P1P2|POLR2G_-_…
## 20 URI1 0.210 9843. URI1_+_30433533.23-P1P2|URI1_+_3043…
df_targets %>%
select(target_gene, pct_proximal, mean_umis_total, sgID_AB) %>%
slice_min(pct_proximal, n=20)
## # A tibble: 20 × 4
## target_gene pct_proximal mean_umis_total sgID_AB
## <chr> <dbl> <dbl> <chr>
## 1 HSPA9 0.130 10223. HSPA9_-_137911079.23-P1P2|HSPA9_-_1…
## 2 TIMM23B 0.130 9602. TIMM23B_-_51371488.23-P1P2|TIMM23B_…
## 3 POLRMT 0.132 9652. POLRMT_+_633505.23-P1P2|POLRMT_+_63…
## 4 OPA1 0.133 10037. OPA1_+_193310990.23-P1P2|OPA1_-_193…
## 5 MTPAP 0.134 9507. MTPAP_-_30638029.23-P1P2|MTPAP_-_30…
## 6 LRPPRC 0.134 9018. LRPPRC_+_44223082.23-P1P2|LRPPRC_-_…
## 7 ZBTB14 0.136 11388. ZBTB14_-_5295498.23-P1P2|ZBTB14_+_5…
## 8 TOMM40 0.136 9585. TOMM40_-_45394587.23-P1P2|TOMM40_-_…
## 9 TOMM22 0.136 10801. TOMM22_+_39078005.23-P1P2|TOMM22_-_…
## 10 HSPE1 0.136 10647. HSPE1_-_198365117.23-P1P2|HSPE1_+_1…
## 11 CAST 0.139 11308. CAST_-_95997966.23-P2|CAST_-_959984…
## 12 SAMM50 0.141 8333. SAMM50_+_44351418.23-P1P2|SAMM50_-_…
## 13 PMPCA 0.141 9951. PMPCA_-_139305175.23-P1P2|PMPCA_-_1…
## 14 POGLUT3 0.142 10188. KDELC2_-_108369127.23-P1P2|KDELC2_-…
## 15 PAM16 0.142 9825. PAM16_+_4401248.23-P1P2|PAM16_-_440…
## 16 DNAJA3 0.142 10141. DNAJA3_+_4475898.23-P1P2|DNAJA3_-_4…
## 17 GRPEL1 0.143 9135. GRPEL1_+_7069324.23-P1P2|GRPEL1_+_7…
## 18 LONP1 0.143 10646. LONP1_+_5720108.23-P1P2|LONP1_+_572…
## 19 RBX1 0.146 18797. RBX1_-_41347436.23-P1P2|RBX1_+_4134…
## 20 TTC1 0.146 10814. TTC1_-_159436216.23-P1P2|TTC1_-_159…
df_targets %>%
select(target_gene, pct_distal, mean_umis_total, sgID_AB) %>%
slice_max(pct_distal, n=20)
## # A tibble: 20 × 4
## target_gene pct_distal mean_umis_total sgID_AB
## <chr> <dbl> <dbl> <chr>
## 1 TAF2 0.521 7062. TAF2_-_120844853.23-P1P2|TAF2_-_12084…
## 2 NKX6-1 0.519 6424. NKX6-1_-_85419268.23-P1P2|NKX6-1_-_85…
## 3 TAF10 0.517 10273. TAF10_-_6633436.23-P1P2|TAF10_+_66334…
## 4 TAF12 0.517 6530. TAF12_+_28969568.23-P1P2|TAF12_+_2896…
## 5 TAF8 0.516 6762. TAF8_-_42018330.23-P1P2|TAF8_+_420183…
## 6 FUNDC2 0.515 6881. FUNDC2_-_154255407.23-P1P2|FUNDC2_-_1…
## 7 TAF3 0.513 8224. TAF3_-_7860714.23-P1P2|TAF3_-_7860540…
## 8 CPSF4 0.513 10493. CPSF4_-_99036611.23-P1P2|CPSF4_-_9903…
## 9 TAF1 0.511 5233. TAF1_-_70586444.23-P1P2|TAF1_+_705866…
## 10 TAF7 0.511 8948. TAF7_+_140700244.23-P1P2|TAF7_+_14070…
## 11 SRRT 0.510 10204. SRRT_+_100472814.23-P1P2|SRRT_+_10047…
## 12 MEIS3 0.510 7515. MEIS3_-_47922702.23-P1|MEIS3_-_479227…
## 13 SUPT5H 0.509 6117. SUPT5H_-_39936298.23-P1P2|SUPT5H_-_39…
## 14 CDK7 0.509 10687. CDK7_+_68530926.23-P1P2|CDK7_-_685306…
## 15 NCBP1 0.507 8811. NCBP1_+_100396123.23-P1P2|NCBP1_+_100…
## 16 GTF2A1 0.507 10284. GTF2A1_+_81687215.23-P1P2|GTF2A1_+_81…
## 17 TAF5 0.506 7740. TAF5_-_105127776.23-P1P2|TAF5_+_10512…
## 18 MRPS34 0.506 8790. MRPS34_+_1823083.23-P1P2|MRPS34_-_182…
## 19 TYK2 0.506 8035. TYK2_+_10491184.23-P1P2|TYK2_-_104911…
## 20 TAF11 0.505 10288. TAF11_-_34855779.23-P1P2|TAF11_-_3485…
df_targets %>%
select(target_gene, pct_distal, mean_umis_total, sgID_AB) %>%
slice_min(pct_distal, n=20)
## # A tibble: 20 × 4
## target_gene pct_distal mean_umis_total sgID_AB
## <chr> <dbl> <dbl> <chr>
## 1 CPSF6 0.443 9471. CPSF6_+_69633592.23-P1P2|CPSF6_+_6963…
## 2 TIMM23B 0.448 9602. TIMM23B_-_51371488.23-P1P2|TIMM23B_-_…
## 3 NUDT21 0.448 11075. NUDT21_+_56485197.23-P1P2|NUDT21_-_56…
## 4 HSPA9 0.450 10223. HSPA9_-_137911079.23-P1P2|HSPA9_-_137…
## 5 POLRMT 0.450 9652. POLRMT_+_633505.23-P1P2|POLRMT_+_6334…
## 6 MTPAP 0.451 9507. MTPAP_-_30638029.23-P1P2|MTPAP_-_3063…
## 7 OPA1 0.451 10037. OPA1_+_193310990.23-P1P2|OPA1_-_19331…
## 8 LRPPRC 0.451 9018. LRPPRC_+_44223082.23-P1P2|LRPPRC_-_44…
## 9 TOMM40 0.452 9585. TOMM40_-_45394587.23-P1P2|TOMM40_-_45…
## 10 CDC5L 0.452 15023. CDC5L_-_44355475.23-P1P2|CDC5L_+_4435…
## 11 COPG1 0.452 11614. COPG1_-_128968486.23-P1|COPG1_+_12896…
## 12 TOMM22 0.453 10801. TOMM22_+_39078005.23-P1P2|TOMM22_-_39…
## 13 ZBTB14 0.453 11388. ZBTB14_-_5295498.23-P1P2|ZBTB14_+_529…
## 14 EIF3E 0.453 15958. EIF3E_+_109260706.23-P1P2|EIF3E_+_109…
## 15 HSPE1 0.454 10647. HSPE1_-_198365117.23-P1P2|HSPE1_+_198…
## 16 PAM16 0.454 9825. PAM16_+_4401248.23-P1P2|PAM16_-_44012…
## 17 GRPEL1 0.454 9135. GRPEL1_+_7069324.23-P1P2|GRPEL1_+_706…
## 18 SLU7 0.455 11552. SLU7_+_159846048.23-P1P2|SLU7_+_15984…
## 19 PSMB6 0.455 7566. PSMB6_-_4699495.23-P1|PSMB6_-_4699534…
## 20 CAST 0.455 11308. CAST_-_95997966.23-P2|CAST_-_95998431…
g <- df_targets %>%
ggplot(aes(x=pct_proximal, y=pct_distal, color=gene_set, text=target_gene)) +
geom_point(aes(size=n_cells), pch=16) +
geom_rug(size=0.1) +
scale_color_manual(values=COLOR_MAP) +
scale_size_continuous(range=c(0.05, 3)) +
scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
theme_bw() +
theme(legend.position="none") +
labs(x="Percent UMIs from proximal isoforms",
y="Percent UMIs from distal isoforms",
color="Gene Set")
ggplotly(g, tooltip=c("text", "x", "y", "gene_set", "n_cells"))
df_targets %>%
ggplot(aes(x=pct_proximal, y=pct_distal, color=gene_set, text=target_gene)) +
geom_point(data=filter(df_targets, gene_set == 'other'), size=0.5) +
geom_point(data=filter(df_targets, gene_set == 'non-targeting'), size=0.5) +
geom_point(data=filter(df_targets, is_known), size=3) +
geom_rug(size=0.1) +
scale_color_manual(values=COLOR_MAP) +
scale_size_continuous(range=c(0.05, 3)) +
scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
theme_bw() +
labs(x="Percent UMIs from proximal isoforms",
y="Percent UMIs from distal isoforms",
color="Gene Set")
Naively, we would expect these to compensatory statistics, however, in this first pass we include also single-UTR isoforms, which are labeled as both “proximal” and “distal”. This possibly explains the strong positive correlation.
We observe here three major outliers that
The first two are major cleavage enhancement factors that co-complex and bind RNA around UGUA motifs found 40-80 nts upstream of the mRNA cleavage site. OGFOD1 has no known regulatory effect on 3’ UTR isoform usage in mammals, though it is a homolog of Tpa1 (Sac. cer.), which stands for “Termination and Polyadenylation 1”.
This could represent novel function.
g <- df_targets %>%
ggplot(aes(x=pct_ipa, y=pct_proximal, color=gene_set, text=target_gene)) +
geom_point(aes(size=n_cells), pch=16) +
geom_rug(size=0.1) +
scale_color_manual(values=COLOR_MAP) +
scale_size_continuous(range=c(0.05, 3)) +
scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
theme_bw() +
theme(legend.position="none") +
labs(x="Percent UMIs from IPA isoforms",
y="Percent UMIs from proximal isoforms",
color="Gene Set")
ggplotly(g, tooltip=c("text", "x", "y", "gene_set", "n_cells"))
df_targets %>%
ggplot(aes(x=pct_ipa, y=pct_proximal, color=gene_set, text=target_gene)) +
geom_point(data=filter(df_targets, gene_set == 'other'), size=0.5) +
geom_point(data=filter(df_targets, gene_set == 'non-targeting'), size=0.5) +
geom_point(data=filter(df_targets, is_known), size=3) +
geom_rug(size=0.1) +
scale_color_manual(values=COLOR_MAP) +
scale_size_continuous(range=c(0.05, 3)) +
scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
theme_bw() +
labs(x="Percent UMIs from IPA isoforms",
y="Percent UMIs from proximal isoforms",
color="Gene Set")
g <- df_targets %>%
ggplot(aes(x=pct_ipa, y=pct_distal, color=gene_set, text=target_gene)) +
geom_point(aes(size=n_cells), pch=16) +
geom_rug(size=0.1) +
scale_color_manual(values=COLOR_MAP) +
scale_size_continuous(range=c(0.05, 3)) +
scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
theme_bw() +
theme(legend.position="none") +
labs(x="Percent UMIs from IPA isoforms",
y="Percent UMIs from distal isoforms",
color="Gene Set")
ggplotly(g, tooltip=c("text", "x", "y", "gene_set", "n_cells"))
df_targets %>%
ggplot(aes(x=pct_ipa, y=pct_distal, color=gene_set, text=target_gene)) +
geom_point(data=filter(df_targets, gene_set == 'other'), size=0.5) +
geom_point(data=filter(df_targets, gene_set == 'non-targeting'), size=0.5) +
geom_point(data=filter(df_targets, is_known), size=3) +
geom_rug(size=0.1) +
scale_color_manual(values=COLOR_MAP) +
scale_size_continuous(range=c(0.05, 3)) +
scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
theme_bw() +
labs(x="Percent UMIs from IPA isoforms",
y="Percent UMIs from distal isoforms",
color="Gene Set")
g <- df_targets %>%
ggplot(aes(x=pct_ipa, y=pct_mt, color=gene_set, text=target_gene)) +
geom_point(aes(size=n_cells), pch=16) +
geom_rug(size=0.1) +
scale_color_manual(values=COLOR_MAP) +
scale_size_continuous(range=c(0.05, 3)) +
scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
theme_bw() +
theme(legend.position="none") +
labs(x="Percent UMIs from IPA isoforms",
y="Percent UMIs from chrM",
color="Gene Set")
ggplotly(g, tooltip=c("text", "x", "y", "gene_set", "n_cells"))
df_targets %>%
ggplot(aes(x=pct_ipa, y=pct_mt, color=gene_set, text=target_gene)) +
geom_point(data=filter(df_targets, gene_set == 'other'), size=0.5) +
geom_point(data=filter(df_targets, gene_set == 'non-targeting'), size=0.5) +
geom_point(data=filter(df_targets, is_known), size=3) +
geom_rug(size=0.1) +
scale_color_manual(values=COLOR_MAP) +
scale_size_continuous(range=c(0.05, 3)) +
scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
theme_bw() +
labs(x="Percent UMIs from IPA isoforms",
y="Percent UMIs from chrM",
color="Gene Set")
g <- df_targets %>%
ggplot(aes(x=pct_proximal, y=pct_mt, color=gene_set, text=target_gene)) +
geom_point(aes(size=n_cells), pch=16) +
geom_rug(size=0.1) +
scale_color_manual(values=COLOR_MAP) +
scale_size_continuous(range=c(0.05, 3)) +
scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
theme_bw() +
theme(legend.position="none") +
labs(x="Percent UMIs from proximal isoforms",
y="Percent UMIs from chrM",
color="Gene Set")
ggplotly(g, tooltip=c("text", "x", "y", "gene_set", "n_cells"))
df_targets %>%
ggplot(aes(x=pct_proximal, y=pct_mt, color=gene_set, text=target_gene)) +
geom_point(data=filter(df_targets, gene_set == 'other'), size=0.5) +
geom_point(data=filter(df_targets, gene_set == 'non-targeting'), size=0.5) +
geom_point(data=filter(df_targets, is_known), size=3) +
geom_rug(size=0.1) +
scale_color_manual(values=COLOR_MAP) +
scale_size_continuous(range=c(0.05, 3)) +
scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
theme_bw() +
labs(x="Percent UMIs from proximal isoforms",
y="Percent UMIs from chrM",
color="Gene Set")
g <- df_targets %>%
ggplot(aes(x=pct_distal, y=pct_mt, color=gene_set, text=target_gene)) +
geom_point(aes(size=n_cells), pch=16) +
geom_rug(size=0.1) +
scale_color_manual(values=COLOR_MAP) +
scale_size_continuous(range=c(0.05, 3)) +
scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
theme_bw() +
theme(legend.position="none") +
labs(x="Percent UMIs from distal isoforms",
y="Percent UMIs from chrM",
color="Gene Set")
ggplotly(g, tooltip=c("text", "x", "y", "gene_set", "n_cells"))
df_targets %>%
ggplot(aes(x=pct_distal, y=pct_mt, color=gene_set, text=target_gene)) +
geom_point(data=filter(df_targets, gene_set == 'other'), size=0.5) +
geom_point(data=filter(df_targets, gene_set == 'non-targeting'), size=0.5) +
geom_point(data=filter(df_targets, is_known), size=3) +
geom_rug(size=0.1) +
scale_color_manual(values=COLOR_MAP) +
scale_size_continuous(range=c(0.05, 3)) +
scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
theme_bw() +
labs(x="Percent UMIs from distal isoforms",
y="Percent UMIs from chrM",
color="Gene Set")
The data set appears consistent with being well-processed and coherent. The most interesting observation is the significant perturbation of distal -> proximal isoforms in the knockdowns of the NUDT21, CPSF6, and OGDOF1. It should be noted that OGDOF1 and NUDT21 form a divergent gene pair, raising the possibility that CRISPRi targeting OGDOF1 also impacts NUDT21 expression levels, and thus does not have any significant effect on isoform usage itself. Examining heatmaps from both the KD6 and KD8 experiments shows that in the OGDOF1 perturbations, NUDT21 expression was also reduced to a similar z-score (though slightly higher than a direct NUDT21 perturbation).
Additionally, both the NUDT21 and OGDOF1 perturbations resulted in similar upregulation of CPSF6 levels, however, CPSF6 perturbation showed only upregulation of NUDT21, with no change in OGDOF1 expression.
## R version 4.1.1 (2021-08-10)
## Platform: x86_64-apple-darwin13.4.0 (64-bit)
## Running under: macOS Big Sur 10.16
##
## Matrix products: default
## BLAS/LAPACK: /Users/mfansler/miniconda3/envs/bioc_3_14/lib/libopenblasp-r0.3.18.dylib
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## attached base packages:
## [1] stats4 stats graphics grDevices utils datasets methods
## [8] base
##
## other attached packages:
## [1] SingleCellExperiment_1.16.0 SummarizedExperiment_1.24.0
## [3] Biobase_2.54.0 GenomicRanges_1.46.0
## [5] GenomeInfoDb_1.30.0 IRanges_2.28.0
## [7] S4Vectors_0.32.0 BiocGenerics_0.40.0
## [9] MatrixGenerics_1.6.0 matrixStats_0.61.0
## [11] Matrix_1.3-4 ggbeeswarm_0.6.0
## [13] plotly_4.10.0 forcats_0.5.1
## [15] stringr_1.4.0 dplyr_1.0.8
## [17] purrr_0.3.4 readr_2.1.1
## [19] tidyr_1.1.4 tibble_3.1.7
## [21] ggplot2_3.3.5 tidyverse_1.3.1
## [23] magrittr_2.0.3
##
## loaded via a namespace (and not attached):
## [1] bitops_1.0-7 fs_1.5.2 lubridate_1.8.0
## [4] httr_1.4.2 tools_4.1.1 backports_1.4.0
## [7] bslib_0.3.1 utf8_1.2.2 R6_2.5.1
## [10] vipor_0.4.5 DBI_1.1.1 lazyeval_0.2.2
## [13] colorspace_2.0-2 withr_2.4.3 tidyselect_1.1.1
## [16] compiler_4.1.1 cli_3.3.0 rvest_1.0.2
## [19] xml2_1.3.3 isoband_0.2.5 DelayedArray_0.20.0
## [22] labeling_0.4.2 sass_0.4.0 scales_1.1.1
## [25] digest_0.6.29 rmarkdown_2.11 XVector_0.34.0
## [28] pkgconfig_2.0.3 htmltools_0.5.2 highr_0.9
## [31] dbplyr_2.1.1 fastmap_1.1.0 htmlwidgets_1.5.4
## [34] rlang_1.0.2 readxl_1.3.1 rstudioapi_0.13
## [37] farver_2.1.0 jquerylib_0.1.4 generics_0.1.1
## [40] jsonlite_1.7.2 crosstalk_1.2.0 RCurl_1.98-1.5
## [43] GenomeInfoDbData_1.2.7 Rcpp_1.0.7 munsell_0.5.0
## [46] fansi_0.5.0 lifecycle_1.0.1 stringi_1.7.6
## [49] yaml_2.2.1 MASS_7.3-54 zlibbioc_1.40.0
## [52] grid_4.1.1 crayon_1.4.2 lattice_0.20-45
## [55] haven_2.4.3 hms_1.1.1 knitr_1.39
## [58] pillar_1.7.0 reprex_2.0.1 glue_1.6.2
## [61] evaluate_0.15 data.table_1.14.2 modelr_0.1.8
## [64] vctrs_0.4.1 tzdb_0.2.0 cellranger_1.1.0
## [67] gtable_0.3.0 assertthat_0.2.1 xfun_0.30
## [70] broom_0.8.0 viridisLite_0.4.0 beeswarm_0.4.0
## [73] ellipsis_0.3.2
## Conda Environment YAML
name: base
channels:
- conda-forge
- bioconda
- defaults
dependencies:
- anaconda-client=1.8.0=pyhd8ed1ab_0
- anaconda-project=0.10.2=pyhd8ed1ab_0
- attrs=21.2.0=pyhd8ed1ab_0
- awscli=1.25.79=py39h6e9494a_0
- backports=1.0=py_2
- backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0
- backports.zoneinfo=0.2.1=py39h701faf5_5
- bagit=1.8.1=pyhd8ed1ab_0
- bagit-profile=1.3.1=pyhd8ed1ab_0
- bdbag=1.6.1=pyhd8ed1ab_0
- beautifulsoup4=4.9.3=pyhb0f4dca_0
- blinker=1.4=py_1
- boa=0.13.0=pyha770c72_0
- boolean.py=3.7=py_0
- boto3=1.24.78=pyhd8ed1ab_0
- botocore=1.27.78=pyhd8ed1ab_0
- brotlipy=0.7.0=py39h63b48b0_1004
- bzip2=1.0.8=h0d85af4_4
- c-ares=1.18.1=h0d85af4_0
- ca-certificates=2022.9.24=h033912b_0
- cachecontrol=0.12.11=pyhd8ed1ab_0
- cairo=1.16.0=he43a7df_1008
- cctools=973.0.1=hd9211c8_2
- cctools_osx-64=973.0.1=h3e07e27_2
- certifi=2022.9.24=pyhd8ed1ab_0
- cffi=1.15.1=py39hae9ecf2_0
- chardet=5.0.0=py39h6e9494a_0
- charset-normalizer=2.0.0=pyhd8ed1ab_0
- click=8.1.3=py39h6e9494a_0
- clyent=1.2.2=py_1
- colorama=0.4.3=py_0
- commonmark=0.9.1=py_0
- conda=4.14.0=py39h6e9494a_0
- conda-build=3.21.9=py39h6e9494a_1
- conda-forge-pinning=2021.10.10.22.03.30=hd8ed1ab_0
- conda-libmamba-solver=22.6.0=pyhd8ed1ab_0
- conda-pack=0.6.0=pyhd3deb0d_0
- conda-package-handling=1.9.0=py39ha30fb19_0
- conda-smithy=3.17.2=pyhd8ed1ab_0
- conda-standalone=4.10.3=h694c41f_0
- conda-suggest=0.1.1=pyh9f0ad1d_0
- conda-suggest-conda-forge=2021.8.24=h694c41f_0
- conda-verify=3.1.1=py39h6e9494a_1004
- constructor=3.3.1=py39h6e9494a_0
- cryptography=38.0.3=py39h7eb6a14_0
- curl=7.86.0=h57eb407_1
- dataclasses=0.8=pyhc8e2a94_3
- dbus=1.13.6=ha13b53f_2
- deprecated=1.2.12=pyh44b312d_0
- docutils=0.16=py39h6e9494a_3
- expat=2.4.1=he49afe7_0
- ffq=0.2.1=pyhdfd78af_0
- filelock=3.0.12=pyh9f0ad1d_0
- fmt=9.1.0=hb8565cd_0
- font-ttf-dejavu-sans-mono=2.37=hab24e00_0
- font-ttf-inconsolata=3.000=h77eed37_0
- font-ttf-source-code-pro=2.038=h77eed37_0
- font-ttf-ubuntu=0.83=hab24e00_0
- fontconfig=2.13.1=h10f422b_1005
- fonts-conda-ecosystem=1=0
- fonts-conda-forge=1=0
- freetype=2.10.4=h4cff582_1
- fribidi=1.0.10=hbcb3906_0
- frozendict=2.3.4=py39h701faf5_0
- future=0.18.2=py39h6e9494a_5
- gawk=5.1.0=h8a989fb_0
- gdk-pixbuf=2.42.6=h2e6141f_0
- gettext=0.21.1=h8a4c099_0
- giflib=5.2.1=hbcb3906_2
- git=2.34.1=pl5321h9a53687_0
- git-lfs=2.13.3=h694c41f_0
- gitdb=4.0.7=pyhd8ed1ab_0
- gitpython=3.1.18=pyhd8ed1ab_0
- glib=2.70.2=hcf210ce_0
- glib-tools=2.70.2=hcf210ce_0
- glob2=0.7=py_0
- globus-sdk=2.0.1=pyhd8ed1ab_0
- gmp=6.2.1=h2e338ed_0
- gnutls=3.6.13=h756fd2b_1
- graphite2=1.3.13=h2e338ed_1001
- harfbuzz=2.9.0=h159f659_0
- htop=3.2.1=h398481e_0
- htslib=1.15=hc057d7f_0
- hub=2.14.2=hc7d050b_0
- icu=68.1=h74dc148_0
- idna=3.1=pyhd3deb0d_0
- importlib-metadata=4.11.4=py39h6e9494a_0
- importlib_metadata=4.11.4=hd8ed1ab_0
- importlib_resources=5.4.0=pyhd8ed1ab_0
- inotify_simple=1.3.5=pyha770c72_3
- ipython_genutils=0.2.0=py_1
- isodate=0.6.0=py_1
- jbig=2.1=h0d85af4_2003
- jinja2=3.0.1=pyhd8ed1ab_0
- jmespath=0.10.0=pyh9f0ad1d_0
- joblib=1.0.1=pyhd8ed1ab_0
- jpeg=9d=hbcb3906_0
- json5=0.9.5=pyh9f0ad1d_0
- jsonschema=4.3.1=pyhd8ed1ab_0
- jupyter_core=4.11.1=py39h6e9494a_0
- krb5=1.19.3=hb49756b_0
- ld64=609=hd2e7500_2
- ld64_osx-64=609=h2487922_2
- ldid=2.1.2=h6a69015_3
- lerc=2.2.1=h046ec9c_0
- libarchive=3.5.2=h2b60450_1
- libcurl=7.86.0=h57eb407_1
- libcxx=14.0.6=hccf4f1f_0
- libdeflate=1.10=h0d85af4_0
- libedit=3.1.20191231=h0678c8f_2
- libev=4.33=haf1e3a3_1
- libffi=3.4.2=h0d85af4_5
- libglib=2.70.2=hf1fb8c0_0
- libiconv=1.17=hac89ed1_0
- libidn2=2.3.2=h0d85af4_0
- liblief=0.11.5=he49afe7_0
- libllvm12=12.0.1=hd011deb_2
- libmamba=1.0.0=h2bf831e_2
- libmambapy=1.0.0=py39he069e75_2
- libnghttp2=1.47.0=h7cbc4dc_1
- libpng=1.6.37=h7cec526_2
- librsvg=2.50.7=hd2a7919_0
- libsolv=0.7.22=hd9580d2_0
- libssh2=1.10.0=h7535e13_3
- libtiff=4.3.0=h1167814_0
- libunistring=0.9.10=h0d85af4_0
- libwebp-base=1.2.1=h0d85af4_0
- libxml2=2.9.12=h93ec3fd_0
- libxslt=1.1.33=h5739fc3_2
- libzlib=1.2.13=hfd90126_4
- license-expression=1.2=py_0
- lockfile=0.12.2=py_1
- lxml=4.8.0=py39h63b48b0_2
- lz4-c=1.9.3=he49afe7_1
- lzo=2.10=haf1e3a3_1000
- mamba=1.0.0=py39ha435c47_2
- markupsafe=2.1.1=py39h63b48b0_1
- msgpack-python=1.0.4=py39h92daf61_1
- msrest=0.6.21=pyh44b312d_0
- nbformat=5.1.3=pyhd8ed1ab_0
- ncurses=6.3=h96cf925_1
- nettle=3.6=hedd7734_0
- oauthlib=3.1.1=pyhd8ed1ab_0
- openssl=1.1.1s=hfd90126_0
- pango=1.48.9=ha05cd14_0
- patch=2.7.6=hbcf498f_1002
- pcre=8.45=he49afe7_0
- pcre2=10.37=ha16e1b2_0
- perl=5.32.1=0_h0d85af4_perl5
- pigz=2.6=h5dbffcc_0
- pip=21.2.4=pyhd8ed1ab_0
- pixman=0.40.0=hbcb3906_0
- pkginfo=1.7.1=pyhd8ed1ab_0
- popt=1.16=h7b079dc_2002
- prompt-toolkit=3.0.20=pyha770c72_0
- prompt_toolkit=3.0.20=hd8ed1ab_0
- psutil=5.9.2=py39ha30fb19_0
- py-lief=0.11.5=py39h9fcab8e_0
- pyasn1=0.4.8=py_0
- pybind11-abi=4=hd8ed1ab_3
- pycosat=0.6.3=py39h63b48b0_1010
- pycparser=2.20=pyh9f0ad1d_2
- pycrypto=2.6.1=py39h89e85a6_1006
- pygithub=1.53=py_0
- pygments=2.10.0=pyhd8ed1ab_0
- pyjwt=1.7.1=py_0
- pyrsistent=0.18.1=py39h63b48b0_1
- pysocks=1.7.1=pyha2e5f31_6
- python=3.9.13=h57e37ff_0_cpython
- python-dateutil=2.8.2=pyhd8ed1ab_0
- python-libarchive-c=4.0=py39h6e9494a_1
- python-tzdata=2021.5=pyhd8ed1ab_0
- python_abi=3.9=2_cp39
- pytz=2021.1=pyhd8ed1ab_0
- pytz-deprecation-shim=0.1.0.post0=py39h6e9494a_2
- pyyaml=5.4.1=py39h701faf5_3
- readline=8.1.2=h3899abd_0
- reproc=14.2.3=h0d85af4_0
- reproc-cpp=14.2.3=he49afe7_0
- requests=2.28.1=pyhd8ed1ab_1
- requests-oauthlib=1.3.0=pyh9f0ad1d_0
- rich=10.16.1=pyhd8ed1ab_0
- ripgrep=13.0.0=h244e342_0
- rsa=4.7.2=pyh44b312d_0
- rsync=3.2.7=ha1fed10_0
- ruamel.yaml=0.17.21=py39h63b48b0_1
- ruamel.yaml.clib=0.2.6=py39h63b48b0_1
- ruamel_yaml=0.15.80=py39h701faf5_1007
- s3transfer=0.6.0=pyhd8ed1ab_0
- scrypt=0.8.18=py39hbfd427f_4
- setuptools=65.3.0=pyhd8ed1ab_1
- six=1.16.0=pyh6c4a22f_0
- smartmontools=7.2=h940c156_0
- smmap=3.0.5=pyh44b312d_0
- soupsieve=2.3.1=pyhd8ed1ab_0
- sqlite=3.38.5=hd9f0692_0
- tapi=1100.0.11=h9ce4665_0
- tk=8.6.12=h5dbffcc_0
- toolz=0.11.1=py_0
- tornado=6.2=py39h701faf5_0
- tqdm=4.62.2=pyhd8ed1ab_0
- traitlets=5.1.0=pyhd8ed1ab_0
- typing_extensions=3.10.0.0=pyha770c72_0
- tzdata=2021e=he74cb21_0
- tzlocal=4.2=py39h6e9494a_1
- urllib3=1.26.6=pyhd8ed1ab_0
- vsts-python-api=0.1.22=py_0
- watchgod=0.7=pyhd8ed1ab_0
- wcwidth=0.2.5=pyh9f0ad1d_2
- wget=1.20.3=h52ee1ee_1
- wheel=0.37.0=pyhd8ed1ab_1
- wrapt=1.14.1=py39h701faf5_0
- xxhash=0.8.0=h35c211d_3
- xz=5.2.5=haf1e3a3_1
- yaml=0.2.5=haf1e3a3_0
- yaml-cpp=0.7.0=hb486fe8_1
- zipp=3.5.0=pyhd8ed1ab_0
- zlib=1.2.13=hfd90126_4
- zstd=1.5.2=hfa58983_4
- pip:
- pyopenssl==20.0.1
prefix: /Users/mfansler/miniconda3